type: object
properties:
  type:
    description: 'the type of the resource'
    type: string
    enum:
      - MeshRateLimit
  mesh:
    description: 'Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources.'
    type: string
    default: default
  name:
    description: 'Name of the Kuma resource'
    type: string
  spec:
    description: Spec is the specification of the Kuma MeshRateLimit resource.
    properties:
      from:
        description: From list makes a match between clients and corresponding configurations
        items:
          properties:
            default:
              description: |-
                Default is a configuration specific to the group of clients referenced in
                'targetRef'
              properties:
                local:
                  description: LocalConf defines local http or/and tcp rate limit configuration
                  properties:
                    http:
                      description: |-
                        LocalHTTP defines confguration of local HTTP rate limiting
                        https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter
                      properties:
                        disabled:
                          description: Define if rate limiting should be disabled.
                          type: boolean
                        onRateLimit:
                          description: Describes the actions to take on a rate limit event
                          properties:
                            headers:
                              description: The Headers to be added to the HTTP response on a rate limit event
                              properties:
                                add:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                                set:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                              type: object
                            status:
                              description: The HTTP status code to be set on a rate limit event
                              format: int32
                              type: integer
                          type: object
                        requestRate:
                          description: Defines how many requests are allowed per interval.
                          properties:
                            interval:
                              description: The interval the number of units is accounted for.
                              type: string
                            num:
                              description: |-
                                Number of units per interval (depending on usage it can be a number of requests,
                                or a number of connections).
                              format: int32
                              type: integer
                          required:
                            - interval
                            - num
                          type: object
                      type: object
                    tcp:
                      description: |-
                        LocalTCP defines confguration of local TCP rate limiting
                        https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter
                      properties:
                        connectionRate:
                          description: Defines how many connections are allowed per interval.
                          properties:
                            interval:
                              description: The interval the number of units is accounted for.
                              type: string
                            num:
                              description: |-
                                Number of units per interval (depending on usage it can be a number of requests,
                                or a number of connections).
                              format: int32
                              type: integer
                          required:
                            - interval
                            - num
                          type: object
                        disabled:
                          description: |-
                            Define if rate limiting should be disabled.
                            Default: false
                          type: boolean
                      type: object
                  type: object
              type: object
            targetRef:
              description: |-
                TargetRef is a reference to the resource that represents a group of
                clients.
              properties:
                kind:
                  description: Kind of the referenced resource
                  enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                  type: string
                mesh:
                  description: Mesh is reserved for future use to identify cross mesh resources.
                  type: string
                name:
                  description: |-
                    Name of the referenced resource. Can only be used with kinds: `MeshService`,
                    `MeshServiceSubset` and `MeshGatewayRoute`
                  type: string
                proxyTypes:
                  description: |-
                    ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                    all data plane types are targeted by the policy.
                  items:
                    enum:
                      - Sidecar
                      - Gateway
                    type: string
                  minItems: 1
                  type: array
                tags:
                  additionalProperties:
                    type: string
                  description: |-
                    Tags used to select a subset of proxies by tags. Can only be used with kinds
                    `MeshSubset` and `MeshServiceSubset`
                  type: object
              type: object
          required:
            - targetRef
          type: object
        type: array
      targetRef:
        description: |-
          TargetRef is a reference to the resource the policy takes an effect on.
          The resource could be either a real store object or virtual resource
          defined inplace.
        properties:
          kind:
            description: Kind of the referenced resource
            enum:
              - Mesh
              - MeshSubset
              - MeshGateway
              - MeshService
              - MeshServiceSubset
              - MeshHTTPRoute
            type: string
          mesh:
            description: Mesh is reserved for future use to identify cross mesh resources.
            type: string
          name:
            description: |-
              Name of the referenced resource. Can only be used with kinds: `MeshService`,
              `MeshServiceSubset` and `MeshGatewayRoute`
            type: string
          proxyTypes:
            description: |-
              ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
              all data plane types are targeted by the policy.
            items:
              enum:
                - Sidecar
                - Gateway
              type: string
            minItems: 1
            type: array
          tags:
            additionalProperties:
              type: string
            description: |-
              Tags used to select a subset of proxies by tags. Can only be used with kinds
              `MeshSubset` and `MeshServiceSubset`
            type: object
        type: object
      to:
        description: To list makes a match between clients and corresponding configurations
        items:
          properties:
            default:
              description: |-
                Default is a configuration specific to the group of clients referenced in
                'targetRef'
              properties:
                local:
                  description: LocalConf defines local http or/and tcp rate limit configuration
                  properties:
                    http:
                      description: |-
                        LocalHTTP defines confguration of local HTTP rate limiting
                        https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter
                      properties:
                        disabled:
                          description: Define if rate limiting should be disabled.
                          type: boolean
                        onRateLimit:
                          description: Describes the actions to take on a rate limit event
                          properties:
                            headers:
                              description: The Headers to be added to the HTTP response on a rate limit event
                              properties:
                                add:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                                set:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                              type: object
                            status:
                              description: The HTTP status code to be set on a rate limit event
                              format: int32
                              type: integer
                          type: object
                        requestRate:
                          description: Defines how many requests are allowed per interval.
                          properties:
                            interval:
                              description: The interval the number of units is accounted for.
                              type: string
                            num:
                              description: |-
                                Number of units per interval (depending on usage it can be a number of requests,
                                or a number of connections).
                              format: int32
                              type: integer
                          required:
                            - interval
                            - num
                          type: object
                      type: object
                    tcp:
                      description: |-
                        LocalTCP defines confguration of local TCP rate limiting
                        https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter
                      properties:
                        connectionRate:
                          description: Defines how many connections are allowed per interval.
                          properties:
                            interval:
                              description: The interval the number of units is accounted for.
                              type: string
                            num:
                              description: |-
                                Number of units per interval (depending on usage it can be a number of requests,
                                or a number of connections).
                              format: int32
                              type: integer
                          required:
                            - interval
                            - num
                          type: object
                        disabled:
                          description: |-
                            Define if rate limiting should be disabled.
                            Default: false
                          type: boolean
                      type: object
                  type: object
              type: object
            targetRef:
              description: |-
                TargetRef is a reference to the resource that represents a group of
                clients.
              properties:
                kind:
                  description: Kind of the referenced resource
                  enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                  type: string
                mesh:
                  description: Mesh is reserved for future use to identify cross mesh resources.
                  type: string
                name:
                  description: |-
                    Name of the referenced resource. Can only be used with kinds: `MeshService`,
                    `MeshServiceSubset` and `MeshGatewayRoute`
                  type: string
                proxyTypes:
                  description: |-
                    ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                    all data plane types are targeted by the policy.
                  items:
                    enum:
                      - Sidecar
                      - Gateway
                    type: string
                  minItems: 1
                  type: array
                tags:
                  additionalProperties:
                    type: string
                  description: |-
                    Tags used to select a subset of proxies by tags. Can only be used with kinds
                    `MeshSubset` and `MeshServiceSubset`
                  type: object
              type: object
          required:
            - targetRef
          type: object
        type: array
    required:
      - targetRef
    type: object
